import ApiClient from '@/api/apiClient';

import type { RequestBody } from 'alova';

/**
 *
 *
 * 产品列表类型
 */
export interface ProductItem {
  /**
   * 接入协议名称
   */
  accessProtocolName?: string;
  /**
   * 产品code
   */
  code?: string;
  /**
   * 创建时间
   */
  createTime?: string;
  /**
   * 设备数量
   */
  deviceCount?: number;
  /**
   * 产品id
   */
  id?: number;
  /**
   * 设备厂商
   */
  manufacturer?: string;
  /**
   * 节点类型 1:直连设备 2:网关设备 3:网关子设备
   */
  nodeType?: number;
  /**
   * 设备型号
   */
  productModel?: string;
  /**
   * 产品名称
   */
  productName?: string;
  /**
   * 数据协议名称
   */
  protocol?: string;
  [property: string]: unknown;
}

/**
 *
 * 产品详情
 */
export interface ProductDetailItem {
  /**
   * 接入协议
   */
  accessProtocolName?: string;
  /**
   * 产品类型
   */
  categoryName?: string;
  /**
   * 市名称
   */
  cityName?: string;
  /**
   * 产品编码
   */
  code?: string;
  /**
   * 创建时间
   */
  createTime?: Date;
  /**
   * 设备数量
   */
  deviceCount?: string;
  /**
   * 产品id
   */
  id?: number;
  /**
   * 产品key mqtt认证密码
   */
  keyInfo?: string;
  /**
   * 设备厂商
   */
  manufacturer?: string;
  /**
   * 物模型数据
   */
  metaData?: string;
  /**
   * 物模型数据
   */
  metaDataObj?: string;
  /**
   * mqtt认证clientId
   */
  mqttClientId?: string;
  /**
   * mqtt认证username
   */
  mqttUserName?: string;
  /**
   * 联网方式
   */
  networkMode?: string;
  /**
   * 节点类型 1:直连设备 2:网关设备 3:网关子设备
   */
  nodeType?: number;
  /**
   * 设备型号
   */
  productModel?: string;
  /**
   * 产品名称
   */
  productName?: string;
  /**
   * 省名称
   */
  provinceName?: string;
  /**
   * 产品描述
   */
  remark?: string;
  /**
   * 产品缩略图
   */
  thumbnail?: string;
  [property: string]: any;
}

/** 获取产品列表 */
export const equipmentProductListApi = (data: RequestBody) => {
  return ApiClient.Post<API.ListType<ProductItem>>('/manager/product/page', data, {
    meta: { auth: true },
  });
};

/** 保存更新产品 */
export const equipmentProductSaveOrUpdateApi = (data: RequestBody) => {
  return ApiClient.Post<ProductItem>('/manager/product/saveOrUpdate', data, {
    meta: { auth: true },
  });
};

/** 删除产品 */
export const equipmentProductDeleteApi = (data: Merged<RequestBody, { id: string }>) => {
  return ApiClient.Post<ProductItem>(`/manager/product/remove/${data.id}`, data, {
    meta: { auth: true },
  });
};

/** 获取产品详情 */
export const equipmentProductDetailApi = (data: Merged<RequestBody, { id: string }>) => {
  return ApiClient.Get<ProductDetailItem>(`/manager/product/get/${data.id}`, {
    meta: { auth: true },
  });
};

/** 获取产品类型 */
export const equipmentProductCategoryApi = (data: RequestBody) => {
  return ApiClient.Post<ProductItem>('/manager/productCategory/list', data, {
    meta: { auth: true },
  });
};

/** 更新产品元数据 */
export const equipmentProductUpdateMetaDataApi = (data: RequestBody) => {
  return ApiClient.Post('/manager/product/updateMetaData', data, {
    meta: { auth: true },
  });
};
